class Solution {
public:
    int minOperations(vector<int>& nums, int x) {
        // 先求target = Sum - x
        long long target = 0;
        for(auto e : nums)
            target += e;
        target -= x;

        // 特殊情况
        if(target == 0)
            return nums.size();
        else if(target < 0)
            return -1;

        int  len = 0, sum = 0;
        for(int left = 0, right = 0; right < nums.size(); right++)
        {
            sum += nums[right]; // 进窗口
            while(sum > target) // 判断
            {
                sum -= nums[left];  // 出窗口
                left++;
            }

            if(sum == target)
            {
                len = max(len, right - left + 1);   // 更新结果
            }
        }

        int ret = nums.size() - len;    // 这才是最后的结果

        return len == 0 ? -1 : ret;
    }
};